// pages/jqq/player.js
let prePage //来源页面
let index //点击视频的索引号
let video, currentTime //点击播放的视频对象（长月烬明）, 视频当前播放位置
page({
fav(e) { //收藏
  // setTimeout(() => {
  // 	console.log('点击收藏')
  // 	let d = this.data
  // 	if (!d.url) {
  // 		wx.showModal({
  // 			content: '视频无效，无法收藏',
  // 			showCancel: false,
  // 		})
  // 		return
  // 	}
  // 	// let source=d.sources[d.sourceIndex] //当前源
  // 	// let ji=source.list[source.listIndex].title //集的名称
  // 	if (!d.title) {
  // 		wx.showModal({
  // 			content: '请设置标题~',
  // 			showCancel: false,
  // 			success: () => {
  // 				this.setData({
  // 					focus: true
  // 				})
  // 			}
  // 		})
  // 		return
  // 	}
  // 	let s=getApp().globalData.storys
  // 	for (let i = 0, l = s.favorite.length; i < l; ++i) {
  // 		let t = s.favorite[i]
  // 		if (t.u == d.url) {
  // 			s.favorite.splice(i, 1)
  // 			break
  // 		}
  // 	}
  // 	let o = {
  // 		u: d.url,
  // 		t: d.title
  // 	}
  // 	if (d.jj) o.d = d.jj
  // 	s.favorite.unshift(o)
  // 	wx.setStorageSync('storys', s)
  // 	wx.showModal({
  // 		content: '收藏成功~',
  // 		showCancel: false,
  // 	})
  // }, 200);
},
confirm(e) {
  this.setData({

			bt: e.detail.value
		})
	},
	fy(){ //若是其他语言文字的简介，则翻译成中文
		if(this.data.fy)return
		wx.request({
			url: 'https://aidemo.youdao.com/trans',  //'https://aidemo.youdao.com/ocrtransapi',
			data: {
				'q':  this.data.jj,
				'from': 'Auto',
				'to': 'Auto'
			},
			success: e => {
				// console.log((888,e.data));
				let a = e.data;
				let s='';
				if (a.translation) {
					let as = a.translation;
					for (let i = 0; i < as.length; ++i) {
						s += as[i] + "\r\n";
					}
				}
				if(a.basic){
					let as=a.basic.explains;
					for(let i=0;i<as.length;++i){
						s+=as[i]+"\r\n";
					}
				}
				this.setData({ fy: s });
			},
			fail(e){
				console.log('Error',e)
			}
		})
	},
	share(){
		let source=this.data.sources[this.data.sourceIndex]
		let title=this.data.title
		let mess=``
		source.list.forEach(ji=>{
			mess+=`${title} ${ji.title}\t${ji.url}\r\n`
		})
		console.log(mess) //{title, url}
		wx.setClipboardData({
		  data: mess,
		})
	},
    onHide(){
		this.save()
    },
    onUnload(){
        this.save()
	},
	save(){ //保存当前视频播放信息
		if(!this.data.sources)return
		let playMessage={ ...this.data,  currentTime }
		delete playMessage.__webviewId__
		let pages=getCurrentPages() //获取当前页面栈。数组中第一个元素为首页，最后一个元素为当前页面。
		let prePage=pages[pages.length-2] //获取视频列表页面对象
		let data=prePage.data //视频列表页面的页面数据
		let menu=data.menus[data.menuIndex] //获取当前菜单项
		let change={hasSave:false} //保存有变化的数据
		change[`menus[${data.menuIndex}].types[${menu.typeIndex}].videos[${index}].playMessage`]=playMessage
		prePage.setData(change) //更新列表页面的点击播放的视频信息
	},
	error(e){ //若视频加载失败，直接跳到下个源
		console.log('Error:', e)
		let si=this.data.sourceIndex
		this.setData({url:null},()=>{
			if(si<this.data.sources.length-1){
				this.sources({target:{dataset:{index:si+1}}})
			}
		})
	},
    timeupdate(e){ //播放进度发生改变时执行
        currentTime= e.detail.currentTime
    },
	async showModal() { //显示模态对话框
		await wx.showModal({
			content: '读取数据错误~',
			showCancel:false,
		})
	},
    async refresh(e){
		let url=`${this.host}${video.url}` //播放页面的地址
		console.log(123,url)
		let html=await this.ajax({url}) //请求播放页面的html文本
		if(html!=null){ //请求成功
			// console.log("网页内容："+html)
			let change={title: video.title} //记录有变化的数据
			let regex=/<div class="module-info-introduction-content">(.+?)<\/div>/s
			let r=regex.exec(html)
			if(r!=null)change.jj=r[1].replace(/(<\/?(p|br)[^>]*>|　)+/g,'\n').replace(/\s*\n\s*/g,'\n　　').replace(/^\n/g,'')
			let sources=[] //存放数据源
			regex=/data-dropdown-value="([^"]+)"/g
			while(r=regex.exec(html)){
				sources.push({
					name: r[1],
				})
			}
			regex=/<div class="module-play-list-content  module-play-list-[^"]+">(.+?)<\/div>/gs
			let index=-1
			while(r=regex.exec(html)){
				let r2, list=[], regex2=/href="([^"]+)" title="[^"]+"><span>([^<]+)/g
				while(r2=regex2.exec(r[1])){
					list.push({
						url: r2[1],
						title: r2[2],
					})
				}
				sources[++index].list=list
			}
			change.sources=sources
			this.setData(change,()=>{
				this.sources({target:{dataset:{index:0}}})
			})

        }else{
            this.showModal()
        }
    },

    async onLoad(options) { //页面加载
        this.host='https://jqqzx.cc' 
        index = options.index //点击视频的索引号
        let pages = getCurrentPages() //获取路由路径
        // console.log(pages);
        prePage = pages[pages.length - 2] //获取当前页面的上个页面
        let menu=prePage.data.menus[prePage.data.menuIndex] //获取菜单对象
        let type=menu.types[menu.typeIndex] //获取类型对象
        video=type.videos[index] //点击的视频对象
        // console.log(777,video)
        if(video.playMessage){ //存在有播放记录信息
            this.setData(video.playMessage)
            return
        }
        this.refresh()
    },
	async sources(e){ //点击源source时的操作
        let sourceIndex=e.target.dataset.index //获取点击源的索引号
        // console.log('sourceIndex=',sourceIndex)
        if(sourceIndex==null)return //没有点击在具体的源上面,或者点击的和原来的源相同
		let change={ sourceIndex } //记录有修改的页面数据
		let oldIndex=this.data.sourceIndex
        if(oldIndex!=null)change[`sources[${oldIndex}].selected`]=false //取消原来的源的选择状态
        change[`sources[${sourceIndex}].selected`]=true //设置新点击源的选择状态
        let source=this.data.sources[sourceIndex] //刚点击的源对象
		this.setData(change,()=>{ //更新界面
			if(!this.data.url){
				this.play({target:{dataset:{index:0}}})
			}
		})
    },
	async play(e){ //播放点击的视频 { target:{ dataset:{ index:0 }}}
		let index=e.target.dataset.index //获取点击视频的索引号
		if(index==null)return //点击到空白地方了
		let sourceIndex=this.data.sourceIndex //点击源的索引号
		let source=this.data.sources[sourceIndex] //获取当前数据源
		let video=source.list[index] //获取点击的视频对象
		let change={playSourceIndex: this.data.sourceIndex } //记录有变化的数据
		change[`sources[${sourceIndex}].listIndex`]=index 
		change[`sources[${sourceIndex}].list[${index}].selected`]=true 
		let playIndex=this.data.playSourceIndex //点击前的播放源
		if(playIndex!=null){
			let oldSource=this.data.sources[playIndex] //获取正播放视频的数据源
			let oldIndex=oldSource.listIndex
			if(oldIndex!=null)change[`sources[${playIndex}].list[${oldIndex}].currentTime`]=currentTime||0 //更新原来视频的播放进度
		}
		this.setData(change)
		// console.log(video)
		if(video.url.startsWith('/')){ //还不是真正的视频地址
			let url=`${this.host}${video.url}`
			let html=await this.ajax({url})
			let r, regex=/var player_aaaa=(.+?)<\/script>/g
			if(r=regex.exec(html)){
				let j=JSON.parse(r[1])
				change={url:j.url, [`sources[${sourceIndex}].list[${index}].url`]:j.url}
				if(j.url_next)change[`sources[${sourceIndex}].list[${index+1}].url`]=j.url_next
				this.setData(change)
			}
		}else{
			currentTime=video.currentTime||0
			this.setData({url: video.url, currentTime: video.currentTime})
		}
    },
    ajax(e) { //获取网页的文本信息， 支持以 Promise 风格来调用, e={url, timeout}
        return new Promise((resolve, reject) => { //resolve-成功时的回调函数，reject-失败时的回调函数
            wx.showLoading({ //显示等待消息框，不支持以 Promise 风格来调用：
                title: '请稍等...',
                mask: true, //显示透明蒙层，避免触摸穿透
            })
            if(e.header)this.setPath(e.url)
            wx.request({ //发起请求
                url: e.url, //网址
                timeout: e.timeout||25000, //超时时间
                header: e.header||null,
                complete: (r) => { //执行结果
                    wx.hideLoading() //隐藏消息框
                    // console.log(r) //{errMsg: "request:fail ", statusCode: 200, data:'xxx'} errMsg: "request:fail timeout"
                    if (r.errMsg == 'request:ok' && r.statusCode == 200) { //成功获得数据
                        let html = r.data //返回的文本信息
                        resolve(html)
                    }else{ //否则，返回空字符串
                        // console.log(e)
                        resolve(null)
                    }
                }
            })
        })
    },
})